﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyChart
{
    /// <summary>
    /// 表示 ChartSeries 对象的集合
    /// </summary>
    public class ChartSeriesCollection : ICollection<ChartSeries>
    {
        #region 字段

        private List<ChartSeries> _series = new List<ChartSeries>();

        #endregion

        #region 属性

        /// <summary>
        /// 集合索引器
        /// </summary>
        /// <param name="index">以0为起始数的集合索引</param>
        /// <returns>ChartSeries 对象</returns>
        public ChartSeries this[int index]
        {
            set
            {
                _series[index] = value;
            }
            get
            {
                return _series[index];
            }
        }

        /// <summary>
        /// 获取集合中 ChartSeries 对象的总数
        /// </summary>
        public int Count
        {
            get
            {
                return _series.Count;
            }
        }

        #endregion

        #region 方法

        /// <summary>
        /// 添加一个 ChartSeries 对象到集合中
        /// </summary>
        /// <param name="item">要添加的 ChartSeries 对象</param>
        public void Add(ChartSeries item)
        {
            _series.Add(item);
        }

        /// <summary>
        /// 移除集合中指定索引的 ChartSeries 对象
        /// </summary>
        /// <param name="index">以0为起始数的集合索引</param>
        public void RemoveAt(int index)
        {
            _series.RemoveAt(index);
        }

        #endregion

        #region ICollection<ChartSeries> 成员

        /// <summary>
        /// 清空集合
        /// </summary>
        public void Clear()
        {
            _series.Clear();
        }

        /// <summary>
        /// 获取一个值，该值表明集合是否包含指定的 ChartSeries 对象。
        /// </summary>
        /// <param name="item">要搜索的 ChartSeries 对象</param>
        /// <returns>如果集合包含指定的 ChartSeries 对象，则为 true；否则为 false</returns>
        public bool Contains(ChartSeries item)
        {
            return _series.Contains(item);
        }

        /// <summary>
        /// 将集合中的 ChartSeries 对象复制到指定的 System.Array 中，从指定的索引开始
        /// </summary>
        /// <param name="array">从零开始的 System.Array，它接收从集合复制来的 ChartSeries 对象</param>
        /// <param name="arrayIndex">指定 System.Array 中接收 ChartSeries 对象的第一个索引</param>
        public void CopyTo(ChartSeries[] array, int arrayIndex)
        {
            _series.CopyTo(array, arrayIndex);
        }

        /// <summary>
        /// 获取一个值，该值指示集合是否为只读
        /// </summary>
        public bool IsReadOnly
        {
            get { return false; }
        }

        /// <summary>
        /// 从集合中移除 ChartSeries 对象
        /// </summary>
        /// <param name="item">需要移除的 ChartSeries 对象</param>
        /// <returns>如果成功移除，则为 true；否则为 false</returns>
        public bool Remove(ChartSeries item)
        {
            return _series.Remove(item);
        }

        #endregion

        #region IEnumerable<ChartSeries> 成员

        /// <summary>
        /// 返回一个实现了 System.Collections.IEnumerator 的对象，该对象包含集合中的所有 ChartSeries 对象（强类型枚举器）
        /// </summary>
        /// <returns>一个实现了 System.Collections.IEnumerator 的对象，该对象包含集合中的所有 ChartSeries 对象（强类型枚举器）</returns>
        public IEnumerator<ChartSeries> GetEnumerator()
        {
            return _series.GetEnumerator();
        }

        #endregion

        #region IEnumerable 成员

        /// <summary>
        /// 返回一个实现了 System.Collections.IEnumerator 的对象，该对象包含集合中的所有 ChartSeries 对象（弱类型枚举器）
        /// </summary>
        /// <returns>一个实现了 System.Collections.IEnumerator 的对象，该对象包含集合中的所有 ChartSeries 对象（弱类型枚举器）</returns>
        IEnumerator IEnumerable.GetEnumerator()
        {
            return _series.GetEnumerator();
        }

        #endregion
    }
}
